

package com.xtsoft.platform.report.domain;

import jakarta.persistence.CascadeType;
import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.FetchType;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.Id;

import jakarta.persistence.Table;
import jakarta.persistence.Transient;

import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.hibernate.annotations.GenericGenerator;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.xtsoft.core.entity.GenericEntity;


/**
 * RepDefine Base Java Bean, base class for the model, mapped directly to database table
 * 
 * Avoid changing this file if not necessary, will be overwritten. 
 *
 * TODO: add class/table comments
 */
@Entity
@Table(name = "rep_define")
@Data
public class RepDefine extends GenericEntity {


	@Id
	@GeneratedValue(generator = "system-uuid")
	@GenericGenerator(name = "system-uuid", strategy = "uuid")
	@Column(name="repDefineId",nullable=false,length=32)
    private String repDefineId;


	/**
	*   报表名称
	*/
	@Column(name="reportName",nullable=false, length=128 )
	private String reportName;


	/**
	*   唯一编码，以D开头，表示设备，4位流水号，应用自动计算
	*/
	@Column(name="objCode",nullable=false, length=5 )
	private String objCode;
	
	/**
	*   状态
	*/
	@Column(name="state",nullable=false, length=10 )
	private Integer state;
	
	/**
	 * 文件名
	 */
	@Column(name="fileName",nullable=true, length=255 )
	private String fileName;

	/**
	 * 文件路径
	 */
	@Column(name="filePath",nullable=true, length=128 )
	private String filePath;
	
	/**
	 * 数据库名
	 */
	@Column(name="dbName",nullable=true, length=128 )
	private String dbName;
	
	/**
	 * 数据库类型  值：0、MySql  1、Oracle  2、SqlServer  3、Sybase  4、DB2  5、PostgreSQL  6、SQLite
	 */
	@Column(name="dbType",nullable=true, length=10 )
	private Integer dbType;
	
	/**
	 * 数据库版本
	 */
	@Column(name="dbVersion",nullable=true, length=24 )
	private String dbVersion;
	
	/**
	 * 数据库中文名
	 */
	@Column(name="dbchName",nullable=true, length=128 )
	private String dbchName;
	
	/**
	 * 是否配置菜单  值 0、否 1、是，指明是否要配置成菜单，若该项选择是，则资源ID必须填
	 */
	@Column(name="isMenu",nullable=false, length=10 )
	private Integer isMenu;
	
	/**
	 * 资源标识
	 */
	@Column(name="resourceId",nullable=true, length=32 )
	private String resourceId;
	

	/**
	*   创建用户
	*/
	@Column(name="createUserId",nullable=true, length=32 )
	private String createUserId;


	/**
	*   创建日期
	*/
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	@Column(name="createDate",nullable=true, length=19 )
	private java.util.Date createDate;


	/**
	*   最近编辑用户
	*/
	@Column(name="editUserId",nullable=true, length=32 )
	private String editUserId;


	/**
	*   编辑日期
	*/
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	@Column(name="editDate",nullable=true, length=19 )
	private java.util.Date editDate;

	/**
	 * 更新日期
	 */
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
	@Column(name="updateDate",nullable=true, length=19 )
	private long updateDate;
	

	

	/**
	*   说明
	*/
	@Column(name="descript",nullable=true, length=255 )
	private String descript;

	@Transient
	private String resourceName;

	/**
	*  默认构造
	*/
	public RepDefine(){
	
	}

	/**
	*  构造方法，自动测试使用，把除主键外的所有非空字段赋值
	*
	*  也可作普通使用  调用该构造方法时，字串参数填或不填均
	*  可，该带参构造方法仅为区别Lombok自动生成的默认构造方
	*  法。
	*  
	*  应用程序可根据需要修改该构造方法中的非空属性赋值。
	**/
	public RepDefine(String forAutoTest){

		this.reportName = "New string";

	}

	/**
	 * @see Object#toString()
	 */
	public String toString() {
		return new ToStringBuilder(this)
				.append("repDefineId", this.repDefineId) 
				.append("reportName", this.reportName) 
				.append("createUserId", this.createUserId) 
				.append("createDate", this.createDate) 
				.append("editUserId", this.editUserId) 
				.append("editDate", this.editDate) 
				.append("state", this.state) 
				.append("descript", this.descript) 
				.toString();
	}
	
	/**
	 * 以实体类主键生成HASHCODE
	 */
	@Override  
	public int hashCode() {  
	    return this.repDefineId.hashCode();  
	} 	 
	
	/**
	 * 以实体类主键比较对象是否相等
	 */
	@Override  
	public boolean equals(Object obj) {  
	    if (obj instanceof RepDefine) {  
	        return this.repDefineId.equals(((RepDefine) obj).getRepDefineId());  
	    }  
	    return false;  
	}	 
	
}
